package com.shrcl.engineerprocess.domain;

import com.shrcl.engineerprocess.domain.NotificationStatus;
import com.shrcl.engineerprocess.domain.NotifyReceiver;
import com.shrcl.engineerprocess.domain.impl.NotificationImpl;
import com.shrcl.engineerprocess.domain.proxy.NotificationProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Date;

@EntityImplementation(implementBy = NotificationImpl.class)
public interface Notification extends IModelObject {
  public abstract NotifyReceiver getReceiver();
  
  public abstract Notification setReceiver(final NotifyReceiver receiver);
  
  public abstract Date getNotifyDate();
  
  public abstract Notification setNotifyDate(final Date notifyDate);
  
  public abstract Date getConfirmDate();
  
  public abstract Notification setConfirmDate(final Date confirmDate);
  
  public abstract Integer getNotifyCount();
  
  public abstract Notification setNotifyCount(final Integer notifyCount);
  
  public abstract String getComment();
  
  public abstract Notification setComment(final String comment);
  
  public abstract String getNotificationType();
  
  public abstract Notification setNotificationType(final String notificationType);
  
  public abstract void doNotify();
  
  public abstract void init();
  
  public abstract Integer getImportance();
  
  public abstract NotificationStatus getStatus();
  
  public abstract void start();
  
  public abstract void performNotify();
  
  public abstract void confirm(final String comment);
  
  public abstract Boolean isCreated();
  
  public abstract Boolean isNotified();
  
  public abstract Boolean isConfirmed();
  
  public abstract NotificationProxy toProxy();
}
